#ifndef _AI_ENGINE_H
#define _AI_ENGINE_H

#include <vector>
#include <cstdlib>
#include <ctime>
#include <QObject>

#include "GameEngine.h"
#include "Player.h"
#include "Move.h"

#include <iostream>
using namespace std;

class AIEngine : public QObject
{
	Q_OBJECT

	private:

    	//Plateau du jeu
        Board* board;
        
        //Tableau des 2 joueurs de la partie
        Player* playerTable[2];
        
        //Liste des coups joués de la partie
        vector<Move> movesList;
        
        //Liste temporaire pour stocker les "coups légaux"
        vector<Move> regularMovesListTemp;
        
        //Player en train de joué
        int currentPlayer;
        
        //Partie terminé?
        bool isFinished;
        
        //Coup possible
        vector<Move> movesJouables;



	public:
	
		AIEngine();
		~AIEngine();
		
		//Fction de connection des modules
		void connecting( GameEngine* );



	public slots:
	
		//Selectionne le moveà jouer (traitement global)
		void chooseMove( GameEngine* );
	
	
	
	private:
	
		//Fonction qui initialise le moteur d'IA
		void initialization(GameEngine*);

		//Choisit aléatoirement un coup à jouer
		Move randomMove();
		
		
		
	signals:
		
		//Emet le coup à jouer de l'IA
		void sendingMove( int, int );
			

};

#endif
